package hu.sch.web.kp.group;
import hu.sch.domain.Group;
import hu.sch.web.kp.KorokPage;
import java.util.Iterator;
import java.util.List;
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.extensions.markup.html.repeater.tree.DefaultNestedTree;
import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
import org.apache.wicket.extensions.markup.html.repeater.tree.content.Folder;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.mapper.parameter.PageParameters;
/**
*
* @author Adam Lantos
*/
public class GroupHierarchy extends KorokPage {
private final List<Group> roots = groupManager.getGroupTree();
public GroupHierarchy() {
setHeaderLabelText("Csoportok listája");
add(new DefaultNestedTree<Group>("hierarchyTree", new TreeProvider()) {
@Override
protected Component newContentComponent(final String id, final IModel<Group> model) {
return new Folder<Group>(id, this, model) {
private static final long serialVersionUID = 1L;
@Override
protected MarkupContainer newLinkComponent(final String id, final IModel<Group> model) {
final Group group = model.getObject();
return new BookmarkablePageLink<ShowGroup>(id, ShowGroup.class,
new PageParameters().add("id", group.getId()));
}
};
}
});
}
public class TreeProvider implements ITreeProvider<Group> {
@Override
public Iterator<? extends Group> getChildren(final Group t) {
return t.getSubGroups().iterator();
}
@Override
public Iterator<? extends Group> getRoots() {
return roots.iterator();
}
@Override
public boolean hasChildren(final Group t) {
final List<Group> groups = t.getSubGroups();
if (groups == null) {
return false;
} else {
return !groups.isEmpty();
}
}
@Override
public IModel<Group> model(final Group t) {
return new Model<Group>(t);
}
@Override
public void detach() {
}
}
}